#ifndef TRYGLOBTEMP_H_INCLUDED
#define TRYGLOBTEMP_H_INCLUDED


#include <assert.h>

template <class T>
class LList
{
  public:

    class Iterator;         //  nested class Iterator
    class ConstIterator;    //  nested class ConstIterator for preventing changes in data pointed by iterator



  private:
    int m_int;
};


/** Decleration of non member functions    **/
//  Boolean operators, works also on Iterator and ConstIterator comparing, use the conversion from Iterator to ConstIterator
//template <class T>
//bool operator==(const typename LList<T>::Iterator& _it1, const typename LList<T>::Iterator& _it2);
//
//
//template <class T>
//bool operator==(const typename LList<T>::ConstIterator&, const typename LList<T>::ConstIterator&);

//template <class T>
//bool operator!=(const typename LList<T>::ConstIterator&, const typename LList<T>::ConstIterator&);
/*******************************************/

template <class T>
class LList<T>::Iterator      //  nested class Iterator
{
 public:
    //  ~Iterator();                                    //  use default
    //  Iterator(const Iterator&)                       //  use default
    //  const Iterator& operator=(const Iterator&)      //  use default

//  friend functions for building from private CTOR Iterator
    private:
        int m_iter;
};


//  nested class ConstIterator for preventing changes in data pointed by iterator
//  private inheritance from class Iterator
template <class T>
class LList<T>::ConstIterator:Iterator
{
 public:
    //  ~ConstIterator();                                           //  use default
    //  ConstIterator(const ConstIterator&)                         //  use default
    //  const ConstIterator& operator=(const ConstIterator&)        //  use default


//  from private to public the ++ function and -- function

};


//---------------------------------------------------------------------------------------

//template <class T>
//bool operator==(const typename LList<T>::ConstIterator& _it1, const typename LList<T>::ConstIterator& _it2)
//{
//    return _it1 == _it2;
//}


#endif // TRYGLOBTEMP_H_INCLUDED
